public class J0502 {
    public static void main(String[] args) {
       /* short a =128;
        byte b =(byte) a;
        System.out.println(a);
        System.out.println(b);*/
        //算术运算符 基本算术运算符：+ - * / %
        int c=4;
        int d=3;
         d=c+d;
        System.out.println(d);
        d=c-d;
        System.out.println(d);
        d=c/d;
        System.out.println(d);
        d=c*d;
        System.out.println(d);
        d=c%d;
        System.out.println(d);
        //增量运算符 包含在算术运算符内 += -= *= /= %=
        d+=c;
        System.out.println(d);
        d-=c;
        System.out.println(d);
        d*=c;
        System.out.println(d);
        d/=c;
        System.out.println(d);
        d%=c;
        System.out.println(d);
        //自增自减运算符 包含在算术运算符内 分为前置和后置 前置先把自己加一个数 然后再使用 后置则相反
         d=10;
        System.out.println(d++);
        System.out.println(++d);
        System.out.println(--d);
        System.out.println(d--);
        //关系运算符 六种：== <= >= < > != 有点类似比大小 通常用来判断
        int x=12;
        int y=15;
        System.out.println(x==y);//比较两边是否相等
        System.out.println(x>=y);//比较x是否大于等于y
        System.out.println(x<=y);//比较x是否小于等于y
        System.out.println(x>y);//比较x是否大于y
        System.out.println(x<y);//比较x是否小于y
        System.out.println(x!=y);//比较x是否不等于y
        //逻辑运算符  逻辑&& 运算符两边都为真才为真，其它都为假
        System.out.println(x<y&&y<20);//true
        System.out.println(x==12&&y>16);//false
        System.out.println(x>15&&y==15);//false
        System.out.println(x>15&&x>y);//false
        //逻辑||  运算符两边只要有一个为真，结果就是真 全假为假
        System.out.println(x<y||y<20); //true
        System.out.println(x==12||y>16);//true
        System.out.println(x>15||y==15);//true
        System.out.println(x>15||x>y);//false
        //逻辑!  改变原来的意思，以假乱真 以真乱假 真变为假 假变为真
        x=30;
        System.out.println(!(x==12));//false 本来是真的
        System.out.println(!(x==30));//true 本来是假的
        //位运算符 四种：& | ~ ^ 在二进制中使用
        int s=01;
        int n=0001;
        System.out.println(s&n);//按位与 两个数都为1 才取1
        System.out.println(s|n);//按位或 有一个数为1 就取1 都是0取0
        System.out.println(~s);//按位取反 1变0 0变1
        System.out.println(s^n);//按位异或 两数相同取0 相异取1
        //移位运算符 <<  >>  >>>
        int g=12;
        System.out.println(g>>1);// 右移运算符 二进制位数向右移一位 右边剪掉一位 左边看符号为补0或者1  /2的n次方
        System.out.println(g<<1);//左移运算符  二进制位数向左移一位 左边剪掉一个 右边补0             *2的n次方
        System.out.println(g>>>1);//无符号右移 二进制位数向右移一位 右边剪掉一位 不管符号位左边通通补0
        //条件运算符 表达式1为真 输出表达式2 不为真输出表达式3

        int a=10;
        int b=20;
        c=a>b?a:b;
        System.out.println(c);
}
}
